home *** CD-ROM | disk | FTP | other *** search
/ Network CD 2 / Network CD - Volume 2.iso / programs / internet / tcp / clients / atcp_ttcp10.lha / amiga / s_socket.h < prev   
Encoding:
C/C++ Source or Header  |  1993-10-10  |  6.4 KB  |  222 lines

  1.  
  2. /*
  3.  *----------------------------------------------------------------------
  4.  *
  5.  * $Source: qc:c-src/common/misclib/RCS/s_socket.h,v $
  6.  * $Revision: 1.4 $
  7.  * $Date: 1993/10/10 15:37:36 $
  8.  * $State: Exp $
  9.  * $Author: alph $
  10.  * $Locker:  $
  11.  *
  12.  *----------------------------------------------------------------------
  13.  *
  14.  * alph 
  15.  * 
  16.  * This code is (C) Copyright 1993 by Carsten Heyl. All rights reserved.
  17.  * This code is NOT in the Public Domain.
  18.  * It may be copied, modified or distributed as long as this notice is
  19.  * present.
  20.  *
  21.  *----------------------------------------------------------------------
  22.  * $Log: s_socket.h,v $
  23.  * Revision 1.4  1993/10/10  15:37:36  alph
  24.  * added s_sendto prototype
  25.  *
  26.  * Revision 1.3  1993/10/02  19:34:25  alph
  27.  * fixed sendto typo
  28.  *
  29.  */
  30.  
  31. #include <stdio.h>
  32. #include <stdarg.h>
  33. #include <fcntl.h>
  34. #include <sys/types.h>
  35. #include <proto/socket.h>
  36.  
  37. #define S_MAXFH 32 /* first socket descriptor */
  38.  
  39. #ifdef PRIVATE_SOCKET_H
  40.  
  41. #define _IOSOCK 0x1000 /* socket buffered io */
  42.  
  43. struct __iobufext {
  44.     struct __iobufext *_next;
  45.     unsigned char *_ptr;    /* current buffer pointer */
  46.     int _rcnt;                /* current byte count for reading */
  47.     int _wcnt;                /* current byte count for writing */
  48.     unsigned char *_base;    /* base address of I/O buffer */
  49.     int _size;            /* size of buffer */
  50.     int _flag;                /* control flags */
  51.     int _file;                /* file descriptor */
  52.     unsigned char _cbuff;    /* single char buffer */
  53. };
  54.  
  55. typedef struct __iobufext FILEEXT;
  56. #else
  57. #define FILEEXT FILE
  58.  
  59. #define fclose s_fclose
  60. #define fflush s_fflush
  61. #define freopen s_freopen
  62. #define setbuf s_setbuf
  63. #define setvbuf s_setvbuf
  64. #define fprintf s_fprintf
  65. #define fscanf s_fscanf
  66. #define vfprintf s_vfprintf
  67.  
  68. #define fgetc s_fgetc
  69. #define fgets s_fgets
  70. #define fputc s_fputc
  71. #define fputs s_fputs
  72. #ifdef getc
  73. #undef getc
  74. #endif
  75. #define getc s_getc
  76. #ifdef putc
  77. #undef putc
  78. #endif
  79. #define putc s_putc
  80.  
  81. #define fread s_fread
  82. #define fwrite s_fwrite
  83. #define fgetpos s_fgetpos
  84. #define fseek s_fseek
  85. #define fsetpos s_fsetpos
  86. #define ftell s_ftell
  87. #ifndef rewind
  88. #define rewind s_rewind
  89. #endif
  90. #ifndef clearerr
  91. #define clearerr s_clearerr
  92. #endif
  93. #ifndef feof
  94. #define feof s_feof
  95. #endif
  96. #ifndef ferror
  97. #define ferror s_ferror
  98. #endif
  99. /* FIXME: #define perror s_perror */
  100. #define fdopen s_fdopen
  101.  
  102. /* low level file stuff */
  103. #undef write
  104. #define write s_write
  105. #undef read
  106. #define read s_read
  107. #undef close
  108. #define close s_close
  109. #undef lseek
  110. #define lseek s_lseek
  111. #undef tell
  112. #define tell s_tell
  113. #define isatty s_isatty
  114. #define iomode s_iomode
  115.  
  116. /* socket stuff */
  117. #define accept s_accept
  118. #define bind s_bind
  119. #define CloseSocket s_CloseSocket
  120. #define connect s_connect
  121. #define getpeername s_getpeername
  122. #define getsockname s_getsockname
  123. #define getsockopt s_getsockopt
  124. #define setsockopt s_setsockopt
  125. #define ioctl s_ioctl
  126. #define listen s_listen
  127. #define recv s_recv
  128. #define recvfrom s_recvfrom
  129. #ifdef select
  130. #undef select
  131. #endif
  132. #define select s_select
  133. #define WaitSelect s_WaitSelect
  134. #define send s_send
  135. #define sendto s_sendto
  136. #define shutdown s_shutdown
  137. #define socket s_socket
  138. #define getdtablesize s_getdtablesize
  139. #undef FD_SET
  140. #define    FD_SET(n, p)    ((p)->fds_bits[(n-S_MAXFH)/NFDBITS] |= (1 << ((n-S_MAXFH) % NFDBITS)))
  141. #undef FD_CLR
  142. #define    FD_CLR(n, p)    ((p)->fds_bits[(n-S_MAXFH)/NFDBITS] &= ~(1 << ((n-S_MAXFH) % NFDBITS)))
  143. #undef FD_ISSET
  144. #define    FD_ISSET(n, p)    ((p)->fds_bits[(n-S_MAXFH)/NFDBITS] & (1 << ((n-S_MAXFH) % NFDBITS)))
  145. #endif
  146.  
  147. #define s_getc(p) \
  148.         (((p)->_flag & _IOREAD) ? \
  149.             (--(p)->_rcnt >= 0 && ! ((p)->_file & _IORKEY) ? \
  150.                 *(p)->_ptr++ \
  151.             : \
  152.                 s_fgetc(p)) \
  153.         : \
  154.             s_fgetc(p))
  155.  
  156. #define s_putc(c,p) \
  157.         (((p)->_flag & _IOWRT) ? \
  158.             (++(p)->_wcnt <= (p)->_size ? \
  159.                 ((((int) (*(p)->_ptr++ = ((unsigned char)(c)))) == '\n' && \
  160.                    ((p)->_flag & _IOLBF)) ? \
  161.                     s_fflush(p), ((unsigned char)(c)) \
  162.                 : \
  163.                     ((unsigned char)(c))) \
  164.             : \
  165.                 (--(p)->_wcnt,s_fputc(c,p))) \
  166.         : \
  167.              s_fputc(c,p))
  168.  
  169. /* s_socket.c */
  170. FILE *s_fdopen ( int fd , const char *mode );
  171. void s_fclose ( FILE *af );
  172. size_t s_fread ( void *b , size_t bsize , size_t n , FILE *fp );
  173. size_t s_fwrite ( void *b , size_t bsize , size_t n , FILE *fp );
  174. int s_fgetc ( FILE *af );
  175. int s_fflush ( FILEEXT *af );
  176. int s_vfprintf ( FILE *af , const char *fmt , va_list args );
  177. int s_fprintf ( FILEEXT *af , const char *fmt , ...);
  178. int s_ferror ( FILE *af );
  179. int s_read ( int fh , void *buf , unsigned int len );
  180. int s_write ( int fh , void *buf , unsigned int len );
  181. int s_close ( int sd );
  182.  
  183.  
  184.  
  185. /* s_socket.c */
  186. FILE *s_fdopen ( int fd , const char *mode );
  187. void s_fclose ( FILE *af );
  188. size_t s_fread ( void *b , size_t bsize , size_t n , FILE *fp );
  189. size_t s_fwrite ( void *b , size_t bsize , size_t n , FILE *fp );
  190. char *s_fgets ( char *b , int bsize , FILE *fp );
  191. int s_fputs ( const char *b , FILE *fp );
  192. int s_fseek ( FILE *fp , long rpos , int mode );
  193. int s_fgetc ( FILE *af );
  194. int s_fflush ( FILEEXT *af );
  195. int s_vfprintf ( FILE *af , const char *fmt , va_list args );
  196. int s_fprintf ( FILEEXT *af , const char *fmt , ...);
  197. int s_fputc ( int c , FILEEXT *af );
  198. int s_ferror ( FILE *af );
  199. int s_read ( int fh , void *buf , unsigned int len );
  200. int s_write ( int fh , void *buf , unsigned int len );
  201. int s_close ( int sd );
  202. int s_isatty ( int sd );
  203. int s_iomode(int fd, int mode);
  204. long s_lseek ( int sd , long a , int mode );
  205. long s_accept ( long s , struct sockaddr *addr , int *addrlen );
  206. long s_bind ( long s , struct sockaddr *name , long namelen );
  207. long s_CloseSocket ( long sd );
  208. long s_connect ( long s , struct sockaddr *name , long namelen );
  209. long s_getpeername ( long s , struct sockaddr *name , int *namelen );
  210. long s_getsockname ( long s , struct sockaddr *name , int *namelen );
  211. long s_setsockopt ( long s , long level , long optname , caddr_t optval , long optlen );
  212. long s_listen ( long s , long backlog );
  213. long s_recv ( long s , char *buf , long len , long flags );
  214. long s_recvfrom(long s, char *buf, long len, long flags, 
  215.         struct sockaddr *from, long *len2);
  216. long s_select ( long nfds , fd_set *readfds , fd_set *writefds , fd_set *exceptfds , struct timeval *timeout );
  217. int s_send ( int s , char *msg , int len , int flags );
  218. int s_sendto(int s, char *msg, int len, int flags,
  219.          struct sockaddr *to, long len2);
  220. long s_shutdown ( long s , long how );
  221. long s_socket ( long domain , long type , long protocol );
  222.